BookForwardで効率よく読書管理を行うためにISBNを拾ってみた #bookforward
書籍の重複買い防止に読書管理アプリへ手をつけてみました。そもそも電子書籍重視の場合は重複を心配する必要もなかったはずなのですが、
- 限定版の紙版だけ特製品
- 帯に応募券がついている
- 複数の電子書籍アプリでバラバラに買ってしまった
等の、気を抜くと同じ本を重複して買ってしまう前提が出始めたためです。
以下、既読管理に手を付けてみたい人向けのまとめとなります。
既読管理アプリ
今回は以下の条件を満たすものとして、BookForwardを選択しました。
- 一括登録可能
- 既読登録用のフォーマットは頑張れば満たせる
- スマホとタブレットでそれぞれ画面最適化されたビューワアプリがある
- 既読管理機能が強く前面にでている
Chrome用アドオンもあるようなのですが、インストール先の確認までは至れませんでした。
登録時の問題点
大きな課題になったのはISBNコードの取得です。というのも、電子書籍アプリで購入済みの書籍が400冊はあるためです。ISBNコードを取得するサイトは存在しますが、それらに400回リクエストを投げるのも結構な負担になります。
なるだけ手数を省くため、ISBNコードを書籍名から取得する際にisbnlibを用いてみました。
% pipenv install isbnlib % pipenv shell
書名からの取得サンプル
大体の書籍はカバーできるはずです。書籍が未登録の場合はエラーとなります。
% vim main.py import isbnlib import sys isbn = isbnlib.isbn_from_words(sys.argv[1]) book = isbnlib.meta(isbn) title = book['Title'] authors = book['Authors'] print("{isbn}-{title}-{author}".format(isbn=isbn, title=title, author=authors))
なお、ISBNコードが間違いなく書籍に紐付いているかを確認するための処理のため、このロジックでの出力はBookForwardへの登録フォーマットではありません。
% python main.py "魔王城でおやすみ" 9784091285775-魔王城でおやすみ 9-['熊之股鍵次']
BookForwardの登録フォーマット
サイトからダウンロード可能なインポート用ファイルは以下のフォーマットになります。
ISBN-10/ASIN,ISBN-13,入庫,既読,所有,読む予定,購入予定,今読んでる,電子書籍,新刊通知,評価,レビュー,ユーザータグ(半角アンダースコア2個()区切り),しおり,入庫日,変更日,読了日,書籍タイトル,著者
そのうち、既読管理で必須なのは
- ISBN-10
- ISBN-13
- 入庫
- 既読
- 所有
- 電子書籍
- 入庫日
- 読了日
- 書籍タイトル
- 筆者
の10個です。
それらを踏まえた上での出力は以下の通りです。尚、この時点で日付データは埋めないものとしています。
import isbnlib import sys isbn13 = isbnlib.isbn_from_words(sys.argv[1]) isbn10 = isbnlib.to_isbn10(isbn13) book = isbnlib.meta(isbn13) title = book['Title'] authors = book['Authors'][0] print('{isbn},{isbn13},1,1,1,0,0,0,1,0,0,,,0,,,,"{title}","{author}"'.format(isbn=isbn10, isbn13=isbn13, title=title, author=authors))
% python main.py "魔王城でおやすみ" 4091285775,9784091285775,1,1,1,0,0,0,1,0,0,,,0,,,,"魔王城でおやすみ 9","熊之股鍵次"
注意点
ISBNコードが複数の巻に重複している場合もあるため、まとめて出力した後にSpreadSheetなどで重複チェックをしての修正フローを挟む方が無難です。
まとめ
既読管理は途中から行うととても難儀な行為です。が、新刊通知などを利用するキッカケや、間違って重複購入することの防止にもなるため、沢山の本に囲まれた生活を送っている方にはオススメです。